package com.github.jusm.component;
 
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class UsmDateFormat extends DateFormat {
 
	/**
	 * 
	 */
	private static final long serialVersionUID = 1835756869319300928L;

	private DateFormat dateFormat;
 
	private SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
 
	public UsmDateFormat(DateFormat dateFormat) {
		this.dateFormat = dateFormat;
	}
 
	@Override
	public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
		return dateFormat.format(date, toAppendTo, fieldPosition);
	}
 
	@Override
	public Date parse(String source, ParsePosition pos) {
		Date date = null;
		try {
			date = sdf.parse(source, pos);
		} catch (Exception e) {
 
			date = dateFormat.parse(source, pos);
		}
		return date;
	}
 
	// 主要还是装饰这个方法
	@Override
	public Date parse(String source) throws ParseException {
 
		Date date = null;
 
		try {
			// 先按我的规则来
			date = sdf.parse(source);
		} catch (Exception e) {
			// 不行，那就按原先的规则吧
			date = dateFormat.parse(source);
		}
		return date;
	}
 
	// 这里装饰clone方法的原因是因为clone方法在jackson中也有用到
	@Override
	public Object clone() {
		Object format = dateFormat.clone();
		return new UsmDateFormat((DateFormat) format);
	}
}
